Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Java-Properties-Datei</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Java-Properties-Datei"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Java-Properties-Datei rootpage-Java-Properties-Datei skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Java-Properties-Datei</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p>Eine <b>Java-Properties-Datei</b> ist eine <a href="Konfigurationsdatei" title="Konfigurationsdatei">Konfigurationsdatei</a>, die hauptsächlich zur Speicherung von Anwendungsdaten im Umfeld der Programmiersprache <a href="Java_(Programmiersprache)" title="Java (Programmiersprache)">Java</a> verwendet wird. Eine <i>Property</i> (deutsch „Eigenschaft“) ist in diesem Zusammenhang ein Text, der unter einem bestimmten Namen abgelegt ist. Java-Properties-Dateien haben üblicherweise die <a href="Dateiendung" class="mw-redirect" title="Dateiendung">Dateiendung</a> <code>.properties</code>.
</p>

<div class="mw-heading mw-heading2"><h2 id="Struktur">Struktur</h2></div>
<p>Das folgende Beispiel zeigt einen Ausschnitt aus einer einfachen Konfigurationsdatei:
</p>
<div class="mw-highlight mw-highlight-lang-properties mw-content-ltr" dir="ltr"><pre><span></span><span class="c1"># Dies ist ein Kommentar</span>
<span class="c1">! Dies ist ebenfalls ein Kommentar</span>
<span class="na">wenig</span><span class="w"> </span><span class="s">Text</span>
<span class="na">pi</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">3.14</span>
<span class="na">lang</span><span class="o">:</span><span class="s">de</span>
<span class="na">vieltext</span><span class="w"> </span><span class="s">Dieser Text </span><span class="se">\</span>
<span class="w"> </span><span class="s">läuft über zwei Zeilen.</span>
<span class="na">paramText</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Text mit dynamischem Parameter: {0}</span>
<span class="na">unicodeText</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">Ein Smiley: </span><span class="se">\u</span><span class="s">263A</span>
</pre></div>
<p>Das Beispiel enthält zwei <a href="Kommentar_(Programmierung)" title="Kommentar (Programmierung)">Kommentarzeilen</a> und definiert sechs Werte für die Namen <code>wenig</code>, <code>pi</code>, <code>lang</code>, <code>vieltext</code>, <code>paramText</code> und <code>unicodeText</code>.
</p><p>Wie sich aus dem Beispiel erkennen lässt, gibt es Kommentarzeilen, die mit einem <a href="Rautezeichen" title="Rautezeichen">Rautezeichen</a> <code>#</code> oder einem <a href="Ausrufezeichen" title="Ausrufezeichen">Ausrufezeichen</a> <code>!</code> beginnen, und Datenzeilen, in denen ein Name und ein Text definiert werden.<sup id="cite_ref-store_1-0" class="reference"><a href="#cite_note-store-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Name und Text können auf drei Arten voneinander getrennt werden, wobei die Trennzeichen nicht zum Schlüssel oder Text gehören.<sup id="cite_ref-store_1-1" class="reference"><a href="#cite_note-store-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<ol><li>durch ein oder mehrere <a href="Leerzeichen" title="Leerzeichen">Leerzeichen</a>: Im obigen Beispiel hat der Schlüssel <code>wenig</code> den Wert „Text“, entsprechend <code>vieltext</code>.</li>
<li>durch ein <a href="Gleichheitszeichen" title="Gleichheitszeichen">Gleichheitszeichen</a> <code>=</code>, umgeben von keinem oder beliebig vielen Leerzeichen: Im obigen Beispiel hat der Schlüssel <code>pi</code> den Wert „3.14“.</li>
<li>durch einen <a href="Doppelpunkt" title="Doppelpunkt">Doppelpunkt</a> <code>:</code>, umgeben von keinem oder beliebig vielen Leerzeichen: Im obigen Beispiel hat der Schlüssel <code>lang</code> den Wert „de“.</li></ol>
<p>Ein <a href="Umgekehrter_Schr%C3%A4gstrich" class="mw-redirect" title="Umgekehrter Schrägstrich">umgekehrter Schrägstrich</a> <code>\</code> am Ende der Zeile bedeutet, dass der Text in der nächsten Zeile fortgesetzt wird.<sup id="cite_ref-store_1-2" class="reference"><a href="#cite_note-store-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Stehen am Ende der Zeile mehrere umgekehrte Schrägstriche, wird der Text nur dann in der nächsten Zeile fortgesetzt, wenn die Anzahl der Schrägstriche ungerade ist. Endet die Zeile z.&nbsp;B. auf <code>\\</code>, so reicht der Text nur bis zum Ende der Zeile und enthält am Ende einen umgekehrten Schrägstrich; endet die Zeile hingegen auf <code>\\\</code>, dann wird der Text in der nächsten Zeile fortgesetzt.<sup id="cite_ref-store_1-3" class="reference"><a href="#cite_note-store-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Als Zeichencodierung für den Text wird <a href="ISO_8859-1" title="ISO 8859-1">ISO 8859-1</a> verwendet. Unicode-Zeichen, die nicht im ISO-Encoding enthalten sind, müssen mit einer <a href="Escape-Sequenz" title="Escape-Sequenz">Escape-Sequenz</a> codiert werden.<sup id="cite_ref-store_1-4" class="reference"><a href="#cite_note-store-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Verwendung_in_Java-Programmen">Verwendung in Java-Programmen</h2></div>
<p>Eine solche Java-Properties-Datei kann mittels der <a href="Klasse_(Objektorientierung)" title="Klasse (Objektorientierung)">Klasse</a> <code><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html">java.util.Properties</a></code> eingelesen werden. Anschließend können die definierten Werte über deren <a href="Methode_(Programmierung)" title="Methode (Programmierung)">Methoden</a> abgefragt werden. Das folgende Code-Fragment erzeugt ein Properties-Objekt, liest eine Datei namens <code>beispiel.properties</code> ein, und legt den Wert der Property <code>lang</code> in einer Variablen namens <code>sprache</code> ab.
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">java.io.FileInputStream</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.io.BufferedInputStream</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.util.Properties</span><span class="p">;</span>
<span class="err">…</span>
<span class="n">Properties</span><span class="w"> </span><span class="n">properties</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Properties</span><span class="p">();</span>
<span class="n">BufferedInputStream</span><span class="w"> </span><span class="n">stream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">BufferedInputStream</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">FileInputStream</span><span class="p">(</span><span class="s">"beispiel.properties"</span><span class="p">));</span>
<span class="n">properties</span><span class="p">.</span><span class="na">load</span><span class="p">(</span><span class="n">stream</span><span class="p">);</span>
<span class="n">stream</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="n">String</span><span class="w"> </span><span class="n">sprache</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">properties</span><span class="p">.</span><span class="na">getProperty</span><span class="p">(</span><span class="s">"lang"</span><span class="p">);</span>
</pre></div>
<p>Bei der <code>load</code>-Methode muss die <a href="Ausnahmebehandlung" title="Ausnahmebehandlung">Ausnahme</a> <code><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html">IOException</a></code> abgefangen werden. Der Übersicht wegen wurde der Try-Catch-Block weggelassen.
</p>
<div class="mw-heading mw-heading2"><h2 id="Platzhalter">Platzhalter</h2></div>
<p>Eine <a href="Positive_und_negative_Zahlen" title="Positive und negative Zahlen">nicht negative</a> <a href="Ganze_Zahl" title="Ganze Zahl">ganze Zahl</a> in geschweiften Klammern <code>{}</code> steht für einen Text, der zur <a href="Laufzeit_(Informatik)" title="Laufzeit (Informatik)">Laufzeit</a> des Programms ergänzt werden soll. Sinnvollerweise beginnen die Zahlen in den Klammern mit <code>0</code> und sind fortlaufend. Sie dürfen mehrfach sowie in beliebiger <a href="Reihenfolge" title="Reihenfolge">Reihenfolge</a> auftreten. Solche Ersetzungen sind für die <a href="Internationalisierung_(Softwareentwicklung)" title="Internationalisierung (Softwareentwicklung)">Internationalisierung</a> oder <a href="Lokalisierung_(Softwareentwicklung)" title="Lokalisierung (Softwareentwicklung)">Lokalisierung</a> von Programmen sinnvoll, wo dynamisch zu erzeugende Textbestandteile in unterschiedlichen <a href="Sprache" title="Sprache">Sprachen</a> an unterschiedlichen Stellen oder in unterschiedlicher Reihenfolge auszugeben sind.
</p><p>Die Ersetzung des Parameters kann mit folgendem Code realisiert werden:
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="n">String</span><span class="w"> </span><span class="n">paramText</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">properties</span><span class="p">.</span><span class="na">getProperty</span><span class="p">(</span><span class="s">"paramText"</span><span class="p">);</span>
<span class="n">String</span><span class="w"> </span><span class="n">dynText</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"dynamisch eingesetzter Text"</span><span class="p">;</span>
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">MessageFormat</span><span class="p">.</span><span class="na">format</span><span class="p">(</span><span class="n">paramText</span><span class="p">,</span><span class="n">dynText</span><span class="p">));</span>
</pre></div>
<p>Ausgabe:
</p>
<pre>Text mit dynamischem Parameter: dynamisch eingesetzter Text
</pre>
<p>Bei mehreren Ersetzungsparametern muss für „dynText“ ein <a href="Array_(Datentyp)" title="Array (Datentyp)">Array</a> oder eine <a href="Menge_(Datenstruktur)" title="Menge (Datenstruktur)">Menge</a> mit den Ersetzungswerten übergeben werden.
</p><p>Streng genommen ist dies kein Feature des Properties-Mechanismus, wird hier jedoch erwähnt, da es in diesem Zusammenhang vielfach Verwendung findet.
</p>
<div class="mw-heading mw-heading2"><h2 id="Internationalisierung">Internationalisierung</h2></div>
<p>Ein weiteres Feature des Properties-Mechanismus in Java ist das Aufteilen der Inhalte pro <a href="Locale" title="Locale">Locale</a>. Das macht man durch ein Suffix im Dateinamen kenntlich. Eine Properties-Datei <code>messages.properties</code> speziell für deutschsprachige Texte würde man <code>messages_de.properties</code> benennen. Das kann man mit der Angabe einer Region noch weiter eingrenzen. Eine Property-Datei für österreichisches Deutsch würde demnach so benannt: <code>messages_de_AT.properties</code>. Eine Variante ohne Suffix sollte als Fallback möglichst immer vorhanden sein. Seit Java 9 werden ResourceBundles-Properties standardmäßig mit UTF-8 decodiert, wodurch die unleserlichen Escape-Sequenzen entfallen können. Sollten beim Dekodieren Probleme auftreten, wird es mit ISO 8859-1 automatisch erneut versucht.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-store-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-store_1-0">a</a></sup> <sup><a href="#cite_ref-store_1-1">b</a></sup> <sup><a href="#cite_ref-store_1-2">c</a></sup> <sup><a href="#cite_ref-store_1-3">d</a></sup> <sup><a href="#cite_ref-store_1-4">e</a></sup></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.oracle.com/javase/7/docs/api/java/util/Properties.html"><i>Properties</i>.</a> Java API Specification</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://openjdk.java.net/jeps/226"><i>JEP 226: UTF-8 Property Resource Bundles.</i></a><span class="Abrufdatum"> Abgerufen am 22.&nbsp;Juni 2020</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3AJava-Properties-Datei&amp;rft.title=JEP+226%3A+UTF-8+Property+Resource+Bundles&amp;rft.description=JEP+226%3A+UTF-8+Property+Resource+Bundles&amp;rft.identifier=https%3A%2F%2Fopenjdk.java.net%2Fjeps%2F226">&nbsp;</span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-10-14" href="https://de.wikipedia.org/wiki/?title=Java-Properties-Datei&amp;oldid=249414150">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>